/**
 * 自定义左侧工具栏
 */
import { assign } from "min-dash";

export default function CustomPalette(palette, create, elementFactory, handTool, lassoTool, spaceTool, globalConnect, translate) {
  this.create = create;
  this.elementFactory = elementFactory;
  this.handTool = handTool;
  this.lassoTool = lassoTool;
  this.spaceTool = spaceTool;
  this.globalConnect = globalConnect;
  this.translate = translate;

  palette.registerProvider(this);
}

CustomPalette.$inject = [
  "palette",
  "create",
  "elementFactory",
  "handTool",
  "lassoTool",
  "spaceTool",
  "globalConnect",
  "translate"
];

CustomPalette.prototype.getPaletteEntries = function () {
  const { create, elementFactory, handTool, lassoTool, translate } = this;

  function createAction(type, group, className, title, options) {
    function createListener(event) {
      let shape = elementFactory.createShape(assign({ type: type }, options));

      if (options) {
        // shape.businessObject.di.isExpanded = options.isExpanded;
        shape.businessObject.name = options.name;
      }
      create.start(event, shape);
    }

    let shortType = type.replace(/^bpmn:/, "");

    return {
      group: group,
      className: className,
      title: title || translate("Create {type}", { type: shortType }),
      action: {
        dragstart: createListener,
        click: createListener
      }
    };
  }

  return {
    "hand-tool": {
      group: "tools",
      className: "bpmn-icon-hand-tool",
      title: "激活抓手工具",
      action: {
        click: function (event) {
          handTool.activateHand(event);
        }
      }
    },
    "lasso-tool": {
      group: "tools",
      className: "bpmn-icon-lasso-tool",
      title: "激活套索工具",
      action: {
        click: function (event) {
          lassoTool.activateSelection(event);
        }
      }
    },
    // "space-tool": {
    //   group: "tools",
    //   className: "bpmn-icon-space-tool",
    //   title: translate("Activate the create/remove space tool"),
    //   action: {
    //     click: function (event) {
    //       spaceTool.activateSelection(event);
    //     }
    //   }
    // },
    // "global-connect-tool": {
    //   group: "tools",
    //   className: "bpmn-icon-connection-multi",
    //   title: translate("Activate the global connect tool"),
    //   action: {
    //     click: function (event) {
    //       globalConnect.start(event);
    //     }
    //   }
    // },

    "tool-separator": {
      group: "tools",
      separator: true
    },

    // "create.start-event": createAction("bpmn:StartEvent", "event", "bpmn-icon-start-event-none", "创建开始节点", {
    //   name: "开始"
    // }),
    // "create.end-event": createAction("bpmn:EndEvent", "event", "bpmn-icon-end-event-none", "创建结束节点", {
    //   name: "结束"
    // }),
    "create.user-task": createAction("bpmn:UserTask", "activity", "bpmn-icon-user-task", "创建用户任务", {
      name: "审批人"
    })
    // "create.exclusive-gateway": createAction("bpmn:ExclusiveGateway", "gateway", "bpmn-icon-gateway-xor", "创建排他网关")
  };
};
